package functii;
import operatori.*;

public class Radical extends Functie {


	public double calcul(double aux1){
		/*if (getfStang() == null)
		System.exit(1);
	return calcul(getfStang().calcul()); */
		return Math.sqrt(aux1);
			}
	
	public static double Calcul(double aux1){
		
		return Math.sqrt(aux1);
	}
	
	public String derivare()
	{
		if (getfStang() == null)
		System.exit(1);
		return Produs.concatTermens(getfStang().derivare(),
				Cat.concatTermens("1",Produs.concatTermens("2",Radical.concatTermens(getfStang().toString()))));
				}
	
	public double calculDerivata()
	{
	if (getfStang() == null)
		System.exit(1);
		return Produs.Calcul(getfStang().calculDerivata(),Cat.Calcul(1,Produs.Calcul(2,Radical.Calcul(getfStang().calculDerivata()))));
		}
	public String toString()
	{
		if (getfStang() == null)
			System.exit(1);
		return concatTermeni(getfStang().toString());
	}
	public static String concatTermens(String aux1)
	{
		String aux;
		int nrP;
		nrP = aux1.charAt(0) == '(' ? 0 : 2;
		aux = "sqrt";
		if (nrP != 0) aux += "(";
		aux += aux1;
		if (nrP != 0) aux += ")";
		return aux;
	}
	public String concatTermeni(String aux1)
	{
		String aux;
		int nrP;
		nrP = aux1.charAt(0) == '(' ? 0 : 2;
		aux = "sqrt";
		if (nrP != 0) aux += "(";
		aux += aux1;
		if (nrP != 0) aux += ")";
		return aux;
	}
	public double calculeazaValoare() {
		return this.calcul();
	}
}

